﻿using Minecraft.DALMySql;
using System.Collections.Generic;

namespace Minecraft.BLL
{
	public partial class BaseBLL
	{
		/// <summary>
		/// 初始化指定表
		/// </summary>
		/// <returns></returns>
		public static bool TruncateTable<T>(T model) where T : class, new()
		{
			return BaseDAL.TruncateTable(model);
		}
		internal static T GetSingleOrDefault<T, V>(T model, KeyValuePair<string, V> keyValue) where T : class
		{
			return BaseDAL.GetSingleOrDefault(model, keyValue);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="model"></param>
		/// <param name="keyValue"></param>
		/// <returns></returns>
		internal static List<T> GetList<T, V>(T model, KeyValuePair<string, V> keyValue) where T : class
		{
			return BaseDAL.GetList(model, keyValue);
		}

		/// <summary>
		/// 统一插入方法（使用注意：model类名必须以‘Model’结尾，并且model属性名称和个数必须与数据库表字段名称和个数一致。如果不一致，那就使用别的方法吧 T^T）
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="model"></param>
		/// <returns></returns>
		public static int Insert<T>(T model) where T : class
		{
			return BaseDAL.Insert(model);
		}
		/// <summary>
		/// 统一插入方法，只判断是否插入成功（使用注意：model类名必须以‘Model’结尾，并且model属性名称和个数必须与数据库表字段名称和个数一致。如果不一致，请使用其中的一个重载方法 T^T）
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="model"></param>
		/// <returns>自增主键Id</returns>
		public static bool InsertSuccess<T>(T model) where T : class
		{
			return BaseDAL.InsertSuccess(model);
		}
		/// <summary>
		/// 统一插入方法（使用注意：model类名必须以‘Model’结尾，fieldStrs为指明要插入的表字段字符串集合，字段集合可以包含所有，也可以是一部分）
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="model"></param>
		/// <param name="fieldStrs">要插入的字段字符串集合，以半角逗号‘,’分割</param>
		/// <returns></returns>
		public static int Insert<T>(T model, string fieldStrs) where T : class
		{
			return BaseDAL.Insert(model, fieldStrs);
		}
		/// <summary>
		/// 统一插入方法，只判断是否插入成功（使用注意：model类名必须以‘Model’结尾，fieldStrs为指明要插入的表字段字符串集合，字段集合可以包含所有，也可以是一部分）
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="model"></param>
		/// <param name="fieldStrs">要插入的字段字符串集合，以半角逗号‘,’分割</param>
		/// <returns>自增主键Id</returns>
		public static bool InsertSuccess<T>(T model, string fieldStrs) where T : class
		{
			return BaseDAL.InsertSuccess(model, fieldStrs);
		}

		/// <summary>
		/// 批量插入
		/// </summary>
		/// <param name="list"></param>
		/// <returns></returns>
		public static bool BatchInsert<T>(List<T> list) where T : class, new()
		{
			return BaseDAL.BatchInsert(list);
		}
		public static bool Update<T>(T model, params string[] keyNames) where T : class
		{
			return BaseDAL.Update(model, keyNames);
		}

		/// <summary>
		/// 批量更新信息（对于数据库操作时，先删除后插入）
		/// </summary>
		/// <param name="list"></param>
		/// <param name="keyValue1"></param>
		public static bool BatchUpdate<T, V>(List<T> list,KeyValuePair<string, V> keyValue1) where T : class, new()
		{
			return BaseDAL.BatchUpdate(list, keyValue1);
		}

		/// <summary>
		/// 批量更新信息（对于数据库操作时，先删除后插入）
		/// </summary>
		public static bool BatchUpdate<T, V, U>(List<T> list,KeyValuePair<string, V> keyValue1,KeyValuePair<string, U> keyValue2) where T : class, new()
		{
			return BaseDAL.BatchUpdate(list, keyValue1, keyValue2);
		}
	}
}
